﻿/*
按长度排序 
Time Limit:1000MS  Memory Limit:32768K


Description:
是一些整数，它的结构是：第一行为一个整数N，表示后面有N个整数需要排序输出，先按长度排，如长度一样则按大小排，若遇到N等于零，则运行结束。 

Sample Input:
3
123
12
3333
2
1000000000000000
1
0
Sample Output:
12
123
3333

1
1000000000000000

*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_ELEMS 1028
#define MAX_CHARS 32

int comparator(const void* pa, const void *pb)
{
	char *a=*(char * const *)pa;
	char *b=*(char * const *)pb;

	int a_len=strlen(a);
	int b_len=strlen(b);

	if(a_len==b_len)
		return strcmp(a, b);
	return a_len-b_len;
}
int main(int argc, char* argv[])
{
	int n;

	while (EOF!=scanf("%d", &n) && n)
	{
		char* a[MAX_ELEMS];
		char word[MAX_ELEMS][MAX_CHARS+1];
		int i=0;
		for (i=0; i<n; ++i)
		{
			scanf("%s", word+i);
			a[i]=(char*)word[i];
		}

		qsort(a, n, sizeof(char*), comparator);
		for (i=0; i<n; ++i)
			puts(a[i]);	
		puts("");
	}
	return 0;
}